Solid State Drives (SSDs) are commonly implemented using NAND flash storage. High-density NAND flash elements such as three-dimensional (3D) triple-level cell (TLC) flash or 3D quadruple-level cell (QLC) flash are often used in high-capacity and low-cost SSD products. The high-density flash elements often have high raw error rates, and therefore typically require low-density parity-check (LDPC) code for making error correction. Existing LDPC decoders typically store a fixed set of soft information tables to facilitate the decoding operation. Since there are variations in physical properties in the cells of different flash elements and as well in the same cell as the cell ages, using fixed soft information tables for soft decoding may not yield accurate result.